/**
 * 图标生成脚本
 * 用于生成简单的TabBar图标和其他必要的图标
 */

const fs = require('fs');
const path = require('path');

// 创建Canvas和图像处理所需的依赖
// 注意：如果要运行这个脚本，需要先安装 canvas 包: npm install canvas
try {
  const { createCanvas } = require('canvas');

  // 确保目录存在
  const ensureDir = (dirPath) => {
    if (!fs.existsSync(dirPath)) {
      fs.mkdirSync(dirPath, { recursive: true });
    }
  };

  // 基础路径
  const basePath = path.join(__dirname);
  const iconsPath = path.join(basePath, 'icons');
  
  // 确保图标目录存在
  ensureDir(iconsPath);

  // 生成简单TabBar图标
  const generateTabIcon = (name, size = 30, color = '#666', activeColor = '#ff6b81') => {
    // 常规图标
    const canvas = createCanvas(size, size);
    const ctx = canvas.getContext('2d');
    
    // 绘制基础图标
    ctx.fillStyle = color;
    
    // 根据不同图标类型绘制不同形状
    if (name === 'home') {
      // 绘制首页图标 - 房子形状
      ctx.beginPath();
      ctx.moveTo(size/2, 5);
      ctx.lineTo(5, size/2);
      ctx.lineTo(8, size/2);
      ctx.lineTo(8, size-5);
      ctx.lineTo(size/2-3, size-5);
      ctx.lineTo(size/2-3, size/2+5);
      ctx.lineTo(size/2+3, size/2+5);
      ctx.lineTo(size/2+3, size-5);
      ctx.lineTo(size-8, size-5);
      ctx.lineTo(size-8, size/2);
      ctx.lineTo(size-5, size/2);
      ctx.closePath();
      ctx.fill();
    } else if (name === 'category') {
      // 分类图标 - 网格
      const gridSize = size / 3;
      const padding = 2;
      
      for (let i = 0; i < 4; i++) {
        const x = (i % 2) * gridSize + padding;
        const y = Math.floor(i / 2) * gridSize + padding;
        ctx.fillRect(x+5, y+5, gridSize-padding*2, gridSize-padding*2);
      }
    } else if (name === 'cart') {
      // 购物车图标
      // 购物车轮子
      ctx.beginPath();
      ctx.arc(10, size-8, 3, 0, Math.PI*2);
      ctx.arc(size-10, size-8, 3, 0, Math.PI*2);
      ctx.fill();
      
      // 购物车主体
      ctx.beginPath();
      ctx.moveTo(5, 8);
      ctx.lineTo(10, 8);
      ctx.lineTo(12, size-12);
      ctx.lineTo(size-12, size-12);
      ctx.lineTo(size-8, 15);
      ctx.lineTo(15, 15);
      ctx.closePath();
      ctx.fill();
    } else if (name === 'my') {
      // 我的图标 - 人形
      // 头部
      ctx.beginPath();
      ctx.arc(size/2, size/3, size/4, 0, Math.PI*2);
      ctx.fill();
      
      // 身体
      ctx.beginPath();
      ctx.moveTo(size/3, size/2);
      ctx.quadraticCurveTo(size/2, size/1.5, size*2/3, size/2);
      ctx.lineTo(size*3/4, size-5);
      ctx.lineTo(size/4, size-5);
      ctx.closePath();
      ctx.fill();
    }
    
    // 保存常规图标
    fs.writeFileSync(path.join(basePath, `tab-${name}.png`), canvas.toBuffer());
    
    // 绘制活跃状态图标
    ctx.clearRect(0, 0, size, size);
    ctx.fillStyle = activeColor;
    
    // 复制上面的绘图代码，但使用活跃颜色
    if (name === 'home') {
      ctx.beginPath();
      ctx.moveTo(size/2, 5);
      ctx.lineTo(5, size/2);
      ctx.lineTo(8, size/2);
      ctx.lineTo(8, size-5);
      ctx.lineTo(size/2-3, size-5);
      ctx.lineTo(size/2-3, size/2+5);
      ctx.lineTo(size/2+3, size/2+5);
      ctx.lineTo(size/2+3, size-5);
      ctx.lineTo(size-8, size-5);
      ctx.lineTo(size-8, size/2);
      ctx.lineTo(size-5, size/2);
      ctx.closePath();
      ctx.fill();
    } else if (name === 'category') {
      const gridSize = size / 3;
      const padding = 2;
      
      for (let i = 0; i < 4; i++) {
        const x = (i % 2) * gridSize + padding;
        const y = Math.floor(i / 2) * gridSize + padding;
        ctx.fillRect(x+5, y+5, gridSize-padding*2, gridSize-padding*2);
      }
    } else if (name === 'cart') {
      // 购物车图标
      // 购物车轮子
      ctx.beginPath();
      ctx.arc(10, size-8, 3, 0, Math.PI*2);
      ctx.arc(size-10, size-8, 3, 0, Math.PI*2);
      ctx.fill();
      
      // 购物车主体
      ctx.beginPath();
      ctx.moveTo(5, 8);
      ctx.lineTo(10, 8);
      ctx.lineTo(12, size-12);
      ctx.lineTo(size-12, size-12);
      ctx.lineTo(size-8, 15);
      ctx.lineTo(15, 15);
      ctx.closePath();
      ctx.fill();
    } else if (name === 'my') {
      // 我的图标 - 人形
      // 头部
      ctx.beginPath();
      ctx.arc(size/2, size/3, size/4, 0, Math.PI*2);
      ctx.fill();
      
      // 身体
      ctx.beginPath();
      ctx.moveTo(size/3, size/2);
      ctx.quadraticCurveTo(size/2, size/1.5, size*2/3, size/2);
      ctx.lineTo(size*3/4, size-5);
      ctx.lineTo(size/4, size-5);
      ctx.closePath();
      ctx.fill();
    }
    
    // 保存活跃状态图标
    fs.writeFileSync(path.join(basePath, `tab-${name}-active.png`), canvas.toBuffer());
    
    console.log(`生成图标: tab-${name}.png 和 tab-${name}-active.png`);
  };

  // 生成搜索图标
  const generateSearchIcon = (size = 24, color = '#999') => {
    const canvas = createCanvas(size, size);
    const ctx = canvas.getContext('2d');
    
    // 绘制放大镜
    ctx.strokeStyle = color;
    ctx.lineWidth = 2;
    
    // 绘制圆圈
    ctx.beginPath();
    ctx.arc(size/3, size/3, size/4, 0, Math.PI*2);
    ctx.stroke();
    
    // 绘制手柄
    ctx.beginPath();
    ctx.moveTo(size/2, size/2);
    ctx.lineTo(size-4, size-4);
    ctx.stroke();
    
    // 保存搜索图标
    ensureDir(iconsPath);
    fs.writeFileSync(path.join(iconsPath, 'search.png'), canvas.toBuffer());
    
    console.log('生成图标: icons/search.png');
  };

  // 生成所有TabBar图标
  generateTabIcon('home');
  generateTabIcon('category');
  generateTabIcon('cart');
  generateTabIcon('my');
  
  // 生成搜索图标
  generateSearchIcon();
  
  // 生成默认产品图片
  const generateDefaultImage = (name, width = 200, height = 200, color = '#f0f0f0', textColor = '#999') => {
    const canvas = createCanvas(width, height);
    const ctx = canvas.getContext('2d');
    
    // 背景
    ctx.fillStyle = color;
    ctx.fillRect(0, 0, width, height);
    
    // 文字
    ctx.fillStyle = textColor;
    ctx.font = '16px Arial';
    ctx.textAlign = 'center';
    ctx.textBaseline = 'middle';
    ctx.fillText(name, width/2, height/2);
    
    // 保存图片
    fs.writeFileSync(path.join(basePath, `${name}.png`), canvas.toBuffer());
    
    console.log(`生成默认图片: ${name}.png`);
  };
  
  // 生成一些默认图片
  generateDefaultImage('banner1', 600, 300);
  generateDefaultImage('banner2', 600, 300);
  generateDefaultImage('product-default', 200, 200);

  console.log('所有图标生成完成!');
} catch (err) {
  console.error('生成图标出错:', err.message);
  console.log('注意: 如果要运行此脚本，需要先安装canvas依赖: npm install canvas');
} 